package com.FUp;

import java.io.File;
import java.util.List;

/**
 * @author 🏹☂࿈正因地࿈🏹️
 * @create 2020/11/8 11:32
 */
public interface IFillUpService {

    /**
     * 获取磁盘的空余大小
     * @param path 磁盘路径
     * @return 磁盘剩余空间
     */
    public long checkSpace(String path);

    /**
     * 判断磁盘是否有空余空间容纳文件或文件集
     * @param path
     * @return
     */
    public boolean isFree(String path);

    /*
    复制文件到磁盘中
    相同文件夹需要创建新的文件夹分开放置
     */

    /**
     * 用某文件填充磁盘
     * @param filePath 文件地址
     * @param targetPath 磁盘地址
     */
    public void filledUp(String filePath,String targetPath);

    /**
     * 汇总某文件夹下的多个文件
     * 汇总的仅仅有文件，没有多级文件夹
     * @param folderPath 文件夹路径
     * @return 多个文件的的地址集合
     */
    public List<File> gatherFiles(String folderPath);

    /**
     * 用一组文件填充磁盘
     * @param fileList 文件集
     * @param targetPath 磁盘地址
     */
    public void filledUp(List<File> fileList,String targetPath);

    /**
     * 计算可以拷贝的文件集数量
     * @param fileList 文件集
     * @param targetPath 磁盘地址
     * @return 可以拷贝的数量
     */
    public int quantityManager(List<File> fileList,String targetPath);

    /**
     * 计算可以拷贝的单个文件数量
     * @param filePath 文件地址
     * @param targetPath 磁盘地址
     * @return 可以拷贝的数量
     */
    public int quantityManager(String filePath,String targetPath);

    /**
     * 获取某个文件集的总大小
     * @param fileList
     * @return
     */
    public long fileListSize(List<File> fileList);

    /**
     * 获取某个文件夹内的文件集合，并返回从目标文件夹中获取完文件数据的新文件集合
     * @param fileList 原始文件集合
     * @param folder
     * @return
     */
    public List<File> readFolder(List<File> fileList,File folder);
}
